#include <bits/stdc++.h>

using namespace std;

const int MAXN = 5010;
const int mod = 1e9+7;

typedef long long ll;

ll f[MAXN][MAXN];
int n,m;
char s[MAXN];

ll qp(ll x,int t){ll res=1;for(;t;t>>=1,x=x*x%mod)if(t&1)res=x*res%mod;return res;}
void add(ll &x,ll y){x=(x+y)%mod;}

int main (){
	scanf("%d",&n);
	scanf("%s",s); m = strlen(s);
	f[0][0] = 1;
	for(int i = 0;i <= n;i++)
		for(int j = 0;j <= i;j++)
			if(f[i][j]){
				add(f[i+1][j+1],f[i][j] * 2 % mod);
				add(f[i+1][max(j-1,0)],f[i][j]);
			}
	printf("%lld\n",f[n][m] * qp(qp(2,m),mod-2) % mod);return 0;
}

